#include <iostream>

template<int I> struct X {
	static int const c = 2;
};
template<> struct X<0> {
	typedef int c;
};
template<typename T> struct Y {
	static int const c = 3;
};
static int const c = 4;
int main() {
	std::cout << (Y<X<1> >::c > ::c > ::c) << std::endl;
	std::cout << (Y<X< 1>>::c > ::c > ::c) << std::endl;
}
